02. Prerequisites & Tech Stack
Prerequisites & Tech Stack
ND004 C01 L01 04 Prerequisites Tech Stack
Here are the skills you'll need for this course:
- Basic Programming in Python
- Front-end web development (HTML, CSS, Javascript)
- Terminal Command Basics
- SQL and Relational Databases
Need a refresh on these? Check out these courses and Nanodegree programs.
- Introduction to Python Programming
- Front End Web Developer Nanodegree program
- Shell (Command Line) Workshop or Linux Command Line Basics
- SQL for Data Analysis and Intro to Relational Databases
And here is the tech stack we'll be gaining proficiency in:
- Python 3
- Flask
- PostgresSQL
- psycopg2
- SQLAlchemy
- Flask-SQLAlchemy
Non-technical prerequisites
I want to take a moment to talk about some of the "softer" requirements for being happy and successful in this course.
Let's pause for a second and discuss some strategies to help you along your journey. We will cover:
- Having the right expectations
- Sculpting out the time
- Strategies for being proactive in your learning
Having the right expectations
This will likely be your first introduction to many concepts in full stack development and probably also your first introduction to being a software engineer. How exciting! And so you may be wondering, how long does it take to learn these things?… Being a good software engineer is about being a good beginner -- all, the, time. It doesn't matter if you've been in software for 1 month, 1 year, or 10 years. The field is constantly changing, every concept contains a rabbit hole of many more concepts to follow, and the point is not to learn "everything" -- it is about scoping clearly what you want to build next. And then, having the foundations and learning strategies for knowing what you'll need to learn to build that next feature, or fix that next bug.
The great oxymoron of mastering software is being aware of what you haven't mastered, but knowing how to learn them with time, for the rest of your career.
You may, in fact, never feel complete, in either this course or in your technical career, on whether you know everything you need to know to fully build any application whatsoever. And so it is normal to feel that there is something "missing" here: like, maybe I won't cover Application Architecture patterns very well, coding best practices, Javascript, CSS, HTML, Python, the Compiler, Performance best practices, Asynchronous programming, and so on so forth. But trust me, this course is deep and comprehensive , and it sets you up to ask those questions, well, and be able to answer them later. But first things first, I will teach you how to build your first full stack web app. You can research, ask, and get mentored on the rest, for the rest of your career to follow. :)
But, don't worry, you don't actually need to know everything to land a job, build your app, or be called a software master! I know I certainly don't know it all… and I've been doing this since 2012… Anyway, we hope to get you on a definite track for landing your first software job, be off to a very strong start, and knowing where you ought to improve upon in the future.
I will make sure that you will have all the resources for building your (first) web application, end to end, of what I hope to be many more to follow, where you will keep learning what it takes to do full stack development, in every application you continue to work on. A growth mindset will greatly help in making this a pleasant journey.
Sculpting out the time
Spinning multiple plates? Are you balancing a family, other classes, travels, or a job at the same time? It helps to schedule and block out a regular time and place to commit to this course to finish it end to end. Take a moment to plan how to set aside the appropriate amount of time you'll need to engage with and commit to this course and the Nanodegree as a whole. Buffer more time than you think you need, and ensure you try to mitigate other obstacles to accomplishing the time you'll need to master the concepts in this course.
Being proactive in your learning
In addition to engaging with your Udacity mentor, other useful strategies include working with peer students in the course, getting live feedback in how ready you are to interview for a job with (free) resources like interviewing.io and leetcode , and checking out supplementary Udacity courses to fill in the blanks for your learning. Things we will cover less in this course include:
- HTML, CSS, and Javascript
- Application Patterns
- Algorithms and Data Structures
When self-studying, I like to find other peers who are on the same journey for social support and accountability, balancing my learning with multiple other resources, taking frequent breaks (see: the pomodoro method), studying in coffee shops and libraries (also see: coffeetivity ), and so forth. Self studying is hard and you need to be in a distraction-free, good mood to get into a state of flow with it, so much like sleep hygiene , I recommend ensuring you're in a well set up environment to get yourself going. Exercise and good sleep help.
This is a marathon, not a sprint.
Don't beat yourself up too much for not getting everything right away . Keep at it, and in a matter of weeks to a few months, you'll be amazed by how much you have learned and can build!